赋能环境的原语;对于机器生成卡片的初步探索
原文:A primitive for enabling environments; early work on machine-generated prompts | Patreon
我正在构思一种全新的间隔重复系统——一种新的赋能环境——它的核心原语与现有系统有本质区别。
为什么需要一种新的核心原语
现有间隔重复系统的核心原语是抽认卡。如果你想记住某个信息,你需要将其写成闪卡,并添加到系统中。你的系统不知道你想记住什么信息,当然也不知道这条信息与你脑海里其他信息的关联。这套系统只知道这些卡片。
对于记忆简单事实,如国家首都或外语词汇,这种方法还算有效。但间隔重复系统的重要性在于它能支持多样化的学习,帮助你更深入地理解和内化各种复杂概念。然而,问题在于——根据我的经验——当学习内容越偏离简单的事实-抽认卡对应模式,这些系统的效果就越不理想,使用起来也越发困难。
Michael Nielsen 和我在之前的研究中指出,「记忆系统」这一概念比「间隔重复系统」更能全面地概括这一领域。后者仅强调了一种特定的学习方法,而认知心理学家已经发现了许多关于人类记忆的深层规律,我们应该充分利用这些研究成果。选择「记忆系统」这一表述的另一个原因是,它更贴近我们的实际需求。我们需要的是一个能帮助我们形成牢固记忆的系统。(实际上,我们的需求可能更为复杂,这一点我们稍后会详细探讨。)
对于基础词汇的记忆,单纯的间隔重复可能已经足够有效。然而,对于更复杂的概念,我发现仅仅依靠抽认卡形成的记忆往往不够牢固。当我查看同一张抽认卡几次之后,卡片特定的表述方式很容易成为强烈的提示线索。这时,我回忆答案并非是因为真正理解了内容的含义,而是出于一种条件反射式的模式匹配。一个真正有效的记忆系统应该能够让我形成足够牢固的记忆。这个系统应该用不同的线索,从不同的角度展现这个想法,与不同的概念产生联系,从而让我用多种方式来编码记忆。
让我们再次拓宽视野。通常,我追求的不仅仅是记忆,更重要的是学习。我希望所学的每个主题都能是记忆鲜活,手到擒来。我希望能够灵活自如地运用所学知识。我希望对知识的理解能不断深化。我希望能发现新的启示,产生新的想法。现代间隔重复系统的发明者 Piotr Wozniak 曾提出,应该先学习后记忆。然而,根据我的经验和对认知结构的理解,我认为这其实是一个持续而并行的过程。当我们练习和阐释所学内容时,我们不断建立新的关联,加深对知识的理解。记忆与这个过程本就融为一体,而非独立于学习之前或之后的步骤。[1]因此,「记忆系统」这个词已不足以概括这个过程。我们理想中的系统需要一个更宽泛的名称——这也是我经常使用「赋能环境」这个术语的原因之一。
这些内容都非常抽象。事实上,我放入间隔重复系统的许多内容并非如此。我可能会记录下与朋友共进晚餐时的一个富有洞察力的观察,一句美好的名言,或者某人出乎我意料的行为。这样做的重点并非为了记忆,而是为了改变——将这些经历内化吸收,使我在未来的感受或行动有所不同。实际上,这一点也适用于我更传统的学习方式。当我学习音乐理论时,我追求的不只是掌握这些知识,而更希望在演奏音乐时能有全新的感受和表现。当我研究一个历史人物,我不仅仅是想学习事实,也希望将他们看待世界的方式融入我自己的视角中,从而得到新的体验。如此一点点,一步一步,成为一个不同的人。[2]一个着眼于这种目标的系统,才能成为一个含义更加深刻的「赋能环境」。
另一种原语:情境化想法
在阐明了这些超然目标之后,我现在可以指出我对抽认卡的主要不满:它们是静态的。它们就像「死掉的鱼」一样毫无生气。要建立牢固的记忆,需要多样化的线索和知识之间的关联;要实现深入的学习,需要逐步深入,逐步复杂;而要真正内化知识,则需要具体的语境和生动的呈现。
为了给这些系统注入活力,我认为我们需要引入新的核心原语。目前的间隔重复系统主要围绕着抽认卡运行——添加、组织和安排抽认卡。我认为应该循至上游。如果我们希望复习过程能够随时间推移而变化、深化并建立知识间的联系,仅仅提供静态任务是远远不够的。事实上,如果我们的目标是促进知识迁移,我们就不应该预先设定固定的任务:因为迁移学习需要惊喜。我们需要找到一种方式,指向那个激发任务的原始想法,将其置于启发我们的具体情境中,从而让各种变化多端、不断深化的任务能够随时间推移而自然涌现。[3]
在阅读一本书时,标记一个重要想法的最自然的方式,就是直接标注文本。比如用荧光笔高亮某个段落,或者在页边写下我们认为有意义的评注。同样,当我们回顾一次对话或某次经历时,也可以在日记或笔记中采用类似的方法。
具体而言,我设想的这个新的原语——不妨称之为「情境化的想法」(situated idea)——将取代传统的问答格式,它包含以下内容:
-
指向相关上下文的链接,包含完整文本;例如一本书、一篇日记等。
-
在该相关文本中标记需要消化吸收的内容的范围(可能是一处或多处);就像你在书上做的高亮标记。
-
一条可选的额外注释,用于阐明你的用意,或者是你的兴趣;类似于你在高亮旁边写的边注。
然后,系统会根据这些输入,以及与相关语境中其他情境化想法的联系,为不同时间生成适合开展的学习活动。
这一过程基本上模仿了专业教学设计师的工作:他们根据文本中引入的一组「知识点」,设计一系列教学活动(如范例讲解、练习题和思考题等),并循序渐进地在不同时间节点呈现这些内容。在某些情况下,这些教学内容的呈现顺序甚至可能根据你的表现进行调整,不过很少有课程能像间隔重复系统那样有效地强化你的记忆。
我所提出的这套系统最大的特点,就是把控制权从教学设计师转交到了用户手中。这也是我过去几年在研究助记媒介的过程中得到的最重要的启示:具有自主学习动力的成年读者通常不愿意被动地接受作者安排的学习内容。人们阅读文本时的需求各不相同,他们的学习目标也不尽相同。比方说,有人想掌握定理本身,有人则想学会证明定理的方法;由于知识储备不同,有些人需要在这个知识点多加巩固,而有些人则需要在那个知识点多下功夫。更不用说每个人感兴趣的分支领域都不相同:同样一个章节,可能被这个读者一扫而过,却被另一个读者深入研读,反之亦然。
这些见解促使我去年进行了「魔法」荧光笔的实验,并提出了一个更有意思的想法:如果我们能让荧光笔真正实现人们期待荧光笔能实现的功能,会怎么样呢?调查显示,学生最青睐的学习方法通常是反复阅读和用荧光笔标记重点。在最有效的学习方法中,这两种方法往往会排在最后。尽管如此,标记重点的感觉很棒:它不仅能表达兴趣,参与学习,更能在文本上留下自己印记。人们认为标记重点能帮助他们内化学习材料。但实际上,它(在大多数情况下)并不奏效。不过,也许我们可以改变这一现状:你可以使用特殊的荧光笔将「情境化的想法」添加到你的知识库中,然后系统会确保你能够真正内化这些材料。
好了,好了:机器生成的提取练习任务
在 2022 年我刚开始写这个想法时,我的看法与现在大不相同。当时,大语言模型(LLMs)无法针对源文本的特定部分生成优质的提取练习任务。事实上,直到 2024 年底,LLMs 在这方面仍然表现欠佳。但现在,我正在与 Ozzie Kirkby 合作开展一个项目,旨在解决这个问题。
许多人都在这个问题上小有涉猎,但我尝试过的解决方案都未能达到令人满意的效果。我一直对这个问题持谨慎态度,主要是因为我不认同主流的思路:一味追求效率、便捷、可用性。在我看来,这些目标是对问题的过早优化。我追求的是本质上的突破。诚然,不用费力制作抽认卡是件好事,但我更希望这些系统能够真正提升学习效果——形成更牢固的记忆、更深入的理解和更全面的知识内化。
创造一个新的核心原语,这才是更值得探索的方向。我想要的是一套类似于间隔重复系统的系统,但随着时间推移,它的复习活动会发生变化,逐步深入,并串联各种知识。这样的系统要么需要耗费巨大人力去逐一定制内容,要么需要有台机器生成任务。而只有通过机器生成任务,才有可能根据每个人的独特场景来量身定制学习活动。
因此,机器生成任务成为了必然选择!Ozzie 和我已经合作研究这个项目约六周了。虽然仍处于起步阶段,但我想与大家分享一下我们目前的方法和心得。
首先:当前的人工智能模型在为超出简单事实的内容生成有效任务时,并不能自动表现出色,至少仅依靠卡片工程和少量样本例子是无法实现的。这一现象是可以理解的。几乎没有人会使用记忆系统来存储简单事实之外的信息,因此训练数据集中这类例子寥寥无几。问题集和练习题是有的,但提取练习任务则完全是另一种数据子集。而且,即便给定了高亮标记和完整的上下文,模型在定位目标上的表现还是很差劲——它们无法很好地判断读者可能想要针对这段高亮内容探讨哪些具体问题。
尽管如此,这些模型偶尔也能生成结构完善、目标明确的任务。有鉴于此,我们正着手训练一个分类器,用于评估任务质量。我们的思路是,虽然模型只能偶尔写出好的任务,但是我们能把坏的任务删掉的话,那就也可以接受。这样一来,随着时间推移,我们就能通过这种评估不同模型和架构的方法,逐步「扩大」模型在任务编写方面相对稀缺的判断能力。
和大多数机器学习流程一样,数据是制约因素。我们首先手动构建了一个数据集,含有数百个「情境化想法」,其中包括源内容、重点标注范围、提取练习任务以及分类评分。随后,我们添加更多数据,用 LLM 生成任务(有好有坏),然后手工评分。目前得到了超过2000个样本。目前的结果显示,分类器在同一源文本范围内(对预留的测试样本)表现良好,但在处理新的源文本时,其泛化能力却明显下降。
因此,我们正在收集更多数据。我们设计了一个高效的工作流程:
-
在阅读 PDF 或网页文章时,我们使用 Hypothes.is 工具对内容进行高亮标注
-
随后,机器会对高亮部分自动生成相关任务建议
-
对机器生成的每条建议,我们会给出以下反馈:一个机器可识别的「评分」;格式自由的评价性意见;针对同一任务的「修正」版本(可选);以及为我们所发现的错误模式(例如过分关注无关紧要的细节)添加标签(可选)
-
如果机器生成的所有任务建议都不理想,我们会亲自回复高亮部分,提出我们期望的任务
这个工作流程中产生的分类评分和人工编写的任务会被用来进一步改进分类器,从而提升输出质量。我们还会将批评性意见和人工优化的示例用作少样本学习或模型微调的材料,以提升任务生成能力。我们希望随着时间推移,能够更多地采纳模型的输出,这将降低人工反馈的成本,进而让我们能够收集更多数据,形成良性循环。当模型输出变得相对可靠后,我们就可以通过众包方式获取标签,进一步加快这一过程。
下一步计划
我的长远目标是开发我此前所描述的更具动态性的学习系统。不过就眼下来看,我预计这个项目对现有间隔重复系统的用户会很有帮助。我们计划开发一个界面,让用户能够方便地标注文本,并将由此生成的学习任务导入到 Anki、Mnemosyne 等工具中。当然,这一切都建立在我们的处理流程能够达到预期效果的前提下。无论如何,我们一定会将我们的数据集和代码开源。
即便在传统抽认卡生成的有限范畴内,要与现有系统实现良好的整合,最终也需要进行更深层次的改变。在理想的整合方案中,用户无需在阅读过程中评估机器生成的学习任务。他们只需专注于阅读和标注,然后在之后进行复习。这里的难点在于,有时一处标注可能会涉及几个不同的概念——而用户可能并不想全盘接受。因此,用户需要就目标定位、期望的问题深度等方面向系统提供反馈。
要实现这一点,最简单的方法是让用户在阅读过程中评估机器生成的任务,但我可以凭经验告诉你:这样做非常难受。更好的做法是在复习时提供反馈。当然,这需要更复杂的系统整合。从长远来看,如果完全按照我的设想,没有必要让用户评估和批准机器生成的任务,因为任务会随每次复习而变化。这是一种全新的概念模型。
在设计这种动态复习时,机器生成的任务虽然必不可少,但并不充分。初步实验表明,大语言模型(LLMs)能够相当可靠地生成已知高质量任务的简单字面变体,从而避免依赖模式匹配的问题。然而我们需要的任务,需要能够逐步深化理解,关联知识,重新让人置身语境。这需要另一套调研方法和开发流程了。
————————
我由衷感谢 Ozzie Kirkby 与我一同探索这个领域,就相关话题进行了富有洞察力的讨论,并对草稿提出了宝贵意见。同时,也要感谢 David Holz 推动我深入思考分类器的相关问题。
————————
[1] 为了阐明观点,我可能过于简化了 Piotr 的看法。我想他大体上会认同我的论述。他可能会(合理地)指出,那些新的联系和更深入的理解实际上是不同的知识单元——因此,实际发生的是一系列相关的学习/记忆阶段对。从系统设计的宏观角度来看,我的观点依然成立:学习和记忆作为一个持续过程是紧密交织的;一个优秀的学习系统应该能够支持这个动态过程。
[2] 这个框架与我上个月在文章中描述的项目迈向可扩展的闪念培养有一些明显的联系。
[3] 这个想法已经酝酿了一段时间;早期相关讨论请参见:
-
从 2022 年夏的助记媒介原型中学到的经验教训 (Oct ‘22)
-
灵活的记忆实践产生流畅的理解 (May ‘23)
-
高亮引导的实践与理解辅助 (Sep ‘23)
-
我们如何学习? (May ‘24)